SAV:;if save=0 then signal QUI;else do i=1 to files;file.i=tim.i"|"ext.i"|"nam.i"|"tem.i"|"des.i"|"day.i"|"dir.i"|"bac.i"|"for.i"|"pri.i"|"mai.i"|"com.i"|"dis.i"|x";end i;call SAVECONFIG
QUI:;if save=1 then do;se "n1caData c6has changed;cbSave c6first? c7[caYesc7]c6: "
gc;a=result;if a~="N" then do;tr "caYesc6!";signal SAV;end;else tr "cbNoc6.";end;bufferflush;signal MENU
EDITCON:;call READFILE;if hi>total then hi=total
EDITCON0:;tr "f0z4cer1 File List For z0r0cf: cb`ca"nam.file"cb' cf(cd"total" c6Files c9Totalcf)n1"
do i=lo to hi;co="d";if i/2=i%2 then co="b";tr "c"co||right(i,2)"cf> c"co||fn.i"";end i
if hi//15>0 then do;h=hi%15;h=15-(hi-(h*15));do i=1 to h;tr "";end i;end
READFILE:;if ~exists(fn||ext.file) then do;total=0;return;end;call open(f1,fn||ext.file,"r")
do i=1 until eof(f1);fn.i=readln(f1);end i;call close(f1);total=i-1;return
PARSER:;parse arg r;rr="";do ii=1 to length(r);a=substr(r,ii,1);if index("0123456789-,",a)=0 then iterate ii;rr=rr||a;end ii;r=rr;a=pos(",",r);ii=0;jj=0
if a>0 then do;do ii=1 until pos(",",r)=0;a=pos(",",r);v.ii=left(r,a-1);r=substr(r,a+1);end ii;ii=ii+1;v.ii=r;r1=ii;end;else do;r1=1;v.1=r;end
do ii=1 to r1;a=pos("-",v.ii);if right(v.ii,1)="-" then v.ii=v.ii||tot;if left(v.ii,1)="-" then do;v.ii="1"v.ii;a=a+1;end;if a=0 then do;jj=jj+1;it.jj=v.ii;iterate ii;end
l1=left(v.ii,a-1);l2=substr(v.ii,a+1);low=min(l1,l2);high=max(l1,l2);do k=low to high;jj=jj+1;it.jj=k;end k;end ii;totpit=jj;return